package com.prp.gwt.client.admin;

import java.util.List;
import java.util.Map;

import com.google.gwt.user.client.rpc.RemoteService;
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath;
import com.prp.gwt.client.ClientException;
import com.prp.gwt.client.vo.CommunityList;
import com.prp.gwt.client.vo.SubjectCategoryList;
import com.prp.gwt.client.vo.User;
import com.prp.gwt.client.vo.UserList;

@RemoteServiceRelativePath("adminRequest")
public interface AdminService extends RemoteService{
	public User getUser() throws ClientException;
	public UserList getAdminList() throws ClientException;
	public UserList getRootList() throws ClientException;
	public CommunityList getCommunityList() throws ClientException;
	public boolean removeAdmin(String email) throws ClientException;
	public boolean removeRoot(String email) throws ClientException;
	public boolean addAdmin(String email) throws ClientException;
	public boolean addRoot(String email) throws ClientException;
 	public void divideCommunity() throws ClientException;
	public boolean isDivideRunning() throws ClientException;
	public List<String> getEmailSuggest(String query) throws ClientException;
	public List<String> getNameSuggest(String query) throws ClientException;
	public UserList getCommunityMemeber(int communityId) throws ClientException;
	public UserList getInactivatedUserList() throws ClientException;
	public boolean activateUser(String email) throws ClientException;
	public boolean deleteUser(String email) throws ClientException;
	public User searchByEmail(String email) throws ClientException;
	public UserList searchByName(String query) throws ClientException;
	public Map<Integer, String> register(User user, String password, String host) throws ClientException;
	public void updateUserInfo(User user) throws ClientException;
	public void signOut();
	public boolean verify();
	public SubjectCategoryList getSubjectCategoryList()throws ClientException;
}
